<?php

/**
 * 栏目ORM Finder对象
 *
 * @author jonwang
 *
 */
class ORM_MyQEE_Category_Finder extends OOP_ORM_Finder_DB
{

    protected $database = Model_CMS::DATABASE;

    protected $tablename = '[category]';

    /**
     * 根据栏目ID获取栏目对象
     * @see MyQEE_OOP_ORM::get_by_id()
     * @return ORM_Category_Data
     */
    public function get_by_id($id)
    {
        return parent::get_by_id($id);
    }

    /**
     * 创建一个栏目对象
     * @see MyQEE_OOP_ORM::create()
     * @return ORM_Category_Data
     */
    public function create($data = null, $is_field_key = false)
    {
        return parent::create($data, $is_field_key );
    }
}


class ORM_MyQEE_Category_Result extends OOP_ORM_Result
{

}

/**
 * 栏目ORM Data对象
 *
 * @author jonwang
 *
 */
class ORM_MyQEE_Category_Data extends OOP_ORM_Data
{
    public $id = array(
        'field_name'  => 'cat_id',
        'is_id_field' => true,
        'is_readonly' => true,
    );

    /**
     * 栏目名称
     *
     * @var string
     */
    public $cat_name;

    /**
     * 站点ID
     *
     * @var int
     */
    public $site_id;

    public $site = array(
        'orm' => array(
            'name' => 'Site',
        ),
    );

    /**
     * 父栏目ID
     *
     * @var int
     */
    public $parent_cid = 'setting[parent_cid]';

    /**
     * 父栏目
     *
     * @var ORM_Category_Data
     */
    public $parent_category = array(
        'is_virtual_field' => true,
        'orm' => array(
            'name' => 'Category',
            'mapping' => array(
                'cat_id' => 'parent_cid',
            ),
            'return' => OOP_ORM::PARAM_RETURN_SINGLE,
        ),
    );

    /**
     * 栏目路径
     * @var string
     */
    public $path = 'setting[cover][path]';

    /**
     * 栏目域名
     * @var string
     */
    public $domain = 'setting[cover][domain]';

    /**
     * 父栏目路径
     * @var string
     */
    public $parent_path = 'setting[cover][parent_path]';

    /**
     * 封面设置
     *
     * @var array
     */
    public $cover = 'setting[cover]';

    /**
     * 列表设置
     *
     * @var ORM_Category_Data_List
     */
    public $list = array(
        'field_name' => 'setting[list]',
        'object' => array(
            'name' => 'ORM_Category_Data_List',
        ),
    );

    protected $setting = array(
        'field_name' => 'setting',
        'format' => array(
            'serialize',
        ),
    );

    /**
     * 状态
     * @var Category_Stats_Data
     */
    public $stats = array(
        'is_virtual_field' => true,
        'orm' => array(
            'name' => 'Category_Stats',
            'mapping' => array(
                'cat_id' => 'id',
            ),
            'return' => OOP_ORM::PARAM_RETURN_SINGLE,
        ),
    );

    /**
     * 获取当前栏目所有父栏目ID
     *
     * @return array
     */
    public function get_all_parent_category_ids()
    {
        $pids = array();
        if ($this->parnent_id && $this->parent_category )
        {
            $pids[] = $this->parent_cid;
            $pids = array_merge($pids,$this->parent_category->get_all_parent_category_ids());
        }
        return $pids;
    }
}

/**
 * 栏目封面设置
 */
class ORM_MyQEE_Category_Data_Cover extends OOP_ORM_Data
{

    /**
     * 是否启用，只有启用，下面的参数才有效
     *
     * @var boolean
     */
    public $use;

    /**
     * 模板
     *
     * @var string
     */
    public $tpl;

    /**
     * 封面文件名
     *
     * @var string
     */
    public $filename;

    /**
     * 是否隐藏封面文件名
     *
     * @var boolean
     */
    public $hidden_filename;

    /**
     * 缓存时间
     *
     * @var int
     */
    public $cache_time;
}


/**
 * 栏目列表设置字段对象
 */
class ORM_MyQEE_Category_Data_List extends OOP_ORM_Data
{
    /**
     * 是否启用，只有启用，下面的参数才有效
     *
     * @var boolean
     */
    public $use;

    /**
     * 模板
     *
     * @var string
     */
    public $tpl;

    /**
     * 每页显示数量
     *
     * @var int
     */
    public $limit;

    /**
     * 最大显示页码数
     *
     * @var int
     */
    public $maxpage;

    /**
     * 排序方式
     *
     * @example array('testfield','DESC')
     * @var array
     */
    public $order_by;

    /**
     * 是否生成静态页
     *
     * @var boolean
     */
    public $tohtml;

    /**
     * 生成文件名格式
     *
     * @example list_{{page}}.html
     * @var string
     */
    public $filename;

    /**
     * 生成静态页面最大上限，超过这个上限将动态输出
     *
     * @var int
     */
    public $tohtml_maxpage;

    /**
     * 动态页面缓存时间
     *
     * @var int
     */
    public $cache_time;
}